home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The X-Philes (2nd Revision)
/
The X-Philes Number 1 (1995).iso
/
xphiles
/
hp48_2
/
mem.sca
< prev
next >
Wrap
Text File
|
1991-04-12
|
6KB
|
152 lines
Article 1487 of comp.sys.handhelds:
Path: en.ecn.purdue.edu!pur-ee!mentor.cc.purdue.edu!purdue!tut.cis.ohio-state.edu!pacific.mps.ohio-state.edu!zaphod.mps.ohio-state.edu!think!mintaka!ogicse!orstcs!jacobs.CS.ORST.EDU!smithj
From: smithj@jacobs.CS.ORST.EDU (Jeremy Smith)
Newsgroups: comp.sys.handhelds
Subject: HP 48sx memory strings
Message-ID: <16848@orstcs.CS.ORST.EDU>
Date: 14 Mar 90 08:07:58 GMT
Sender: usenet@orstcs.CS.ORST.EDU
Reply-To: smithj@jacobs.CS.ORST.EDU.UUCP (Jeremy Smith)
Organization: Oregon State University - CS - Corvallis Oregon
Lines: 137
> From: dan@Apple.COM (Dan Allen)
>
> For example, I was using the debugger to dump memory to the serial port
> at 9600 baud. I had no idea what I was doing, but all I did was run
> MacTerminal at 9600 baud and voila, I had the ROM image on my Mac as a
> text file...
I dumped out memory to the PC and then translated the code from HEX
to ASCII in order to locate strings. There was nothing unusual (like
poems, peoples names, and so on) but it often acts as a point of
departure for further study to know locations of strings.
Hook the 48 to the PC and establish contact. Enter the debugger
(ON-D simultaneously, back arrow). Press . (decimal point) for a dump of
the eight bytes in the display, or spc for a whole 32k starting at the
current address.
Here is a string rich area as dumped and translated:
719B0:403505440240449 SPD DI 72000:8E920C7200C2A20 ) ' ,*
719C0:3505409425F4D44 SP IROM 72010:000001000B20009 I
719D0:942514D440B4244 IRAM KBD 72020:E63757666696369 nsuffici
719E0:1340B424442330B 1 KBD2 K 72030:56E64702D456D6F ent Memo
719F0:2444E0543544022 BD ESD 2 72040:2797B2000449627 ry+ @ &W
71A00:130365020223130 10V 210 72050:63647F627970225 6F & "U
71A10:653054354420F4B V ESD OK 72060:63657273796F6E6 6V'7
71A20:60F4B4D24383024 OK-48 72070:200055E64656669 Undefi
71A30:641494C44055F5C FAIL U_L 72080:E6564602C4F6361 ned Loca
71A40:244055142545A05 B UART U 72090:C602E416D656B20 l Name+
71A50:F5C4240285D4944 _LB XMIT 720A0:055E646566696E6 P FVf V
71A60:40904596D656029 Time I 720B0:6460285C4942402 F $
71A70:E69647603547162 nit Star 720C0:416D656D1000D45 V Me
71A80:47A360641696C60 t: Fail 720D0:D6F627970234C65 mory Cle
71A90:A34005F42545402 : PORT R 720E0:16279100005F677 ar vW
71AA0:14D413402514D42 AM1 RAM2 720F0:62702C4F6374751 & 6GW
71AB0:409425C42440942 IRLB IR 72100:00751627E696E67 Warning
71AC0:94F4403554E4444 IO SEND 72110:A37200094E66716 :' f
71AD0:25543465E065562 RECV Ver 72120:696460234162746 F 2 &G
71AE0:3796F6E60284054 sion HP4 72130:244164716F1000F B F O
71AF0:83D2141134F6079 8-A Copy 72140:26A65636470294E bject In
71B00:279676864702840 right HP 72150:025537569200005 Use)
71B10:021393839376713 1989g C 72160:6274702E4F64702 &G F
Note that each byte has its nibbles reversed.
> From: billw@hpcvra.CV.HP.COM (William C Wickes)
>
> To make life more interesting, the fields are written backwards (this
> is how the CPU reads memory), so e.g. the prolog is written E1B20.
Here are some other addresses with strings occurring at or after that
address (tables indicate what could be look-up tables - just my notes as
I was browsing):
045d0: LowBat
18f70: week(s) day(s) hour(s) minute(s) second(s) ticks
1ff30: Intercept
1ff50: Slope
218d0: SYSRAM
253a0: TO DIR ELSE END UNTIL REPEAT NEXT STEP THEN
29710: Invalid Expression
2d3b0: PACKET ERRMSG LNAME OPOS KMODE
2ea60: IOPAR
31f80: PRTPAR
34dc0: symbx
39250: - 39550: tables
3b750: DBUG
3c070: HIST
3c370: RESET
3c7d0: TIME EXEC SET DAY MIN NONE DATE NEW EDIT LENG VOL SPEED FORCE
POWR TEMP ANGL VISC then lots of unit abbreviations...
3f410: PORT
3fad0: SKEY
48770: SOLVR
487d0: PLOTR
48a80: STK
48ad0: undefined
48d50: Alrmdat execs root
56990: sumvar
60810: regm ctsm mlgm prdm
60bf0: pattern
63xxx: more tables...
65260: UNKNOWN
65330: GROB
69aa0: Radix
69ac0: Exp
69af0: buffm
69b20: ManOpm
69b50: Modem <--------hmmmmmmmmmmmmmm?
69ce0: unbound
6fxxx: block of zeros at end of 6xxxx block
719b0: SPD DISP IROM IRAM KBDI KBD2 KBD ESD 210V 210V ESD OK OK-48 FAIL
U_LB UART U_LB XMIT Time Init Starti Fail: Port RAM1 RAM2 IRLB IRIO
SEND RECV Version HP48-A Copyright HP 1989 Insufficient memory
Undefined location Memory Clear
73xxx: lots of error messages
7373e: - 7a741: unit names
73746: - 7b757: fcn names
79xxx: - 7axxx: interesting patterns
7f9b0: homedir
7fff0: HP48-A
8xxxx: - fxxxx: I haven't looked at pages 8 through f apart from e:
exxxx: this whole 32k page is a repeat of page 6xxxx.
I threw together the following C code to generate the translated 48
core dump (no apologies for assembly/Pascal in C :-). Note that
characters below ASCII 32 (space) or above ASCII 127 (DEL) were
translated to spaces. A good modification would be to send out streams
of text with just addresses embedded every 128 bytes, for easier reading
and searching for text strings.
Source for program: asci2hex
/* usage: asci2hex < 48_core[input file] > 48_core.asc[output file]
#include <stdio.h>
#include <stdlib.h>
main()
{
int c, i, j, f, g, l;
char a[23], b[9];
f=0; g=0;
while ((c=getchar()) != EOF)
{
a[f++]=c;
if (c==58)
{
for (i=0; i<8; i++)
{
c=getchar(); a[f++]=c; if (c<60) c=c-48; else c=c-55; l=c;
c=getchar(); a[f++]=c; if (c<60) c=c-48; else c=c-55;
c=c*16+l; if ((c<32)|(c>126)) c=32; b[g++]=c;
a[22]='\0'; b[8]='\0';
}
printf("%s %s", a, b); f=0; g=0;
}
}
}